package com.hfzy.ihk.facade.calldata.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hfzy.ihk.common.facade.BaseEntity;
import com.hfzy.ihk.common.facade.enums.CustomerFollowCategory;
import com.hfzy.ihk.common.facade.enums.CustomerNeedLevel;
import com.hfzy.ihk.common.facade.enums.call.CommitTo;
import com.hfzy.ihk.facade.calldata.enums.MainCallType;
import com.hfzy.ihk.facade.calldata.enums.PageFrom;
import com.hfzy.ihk.facade.calldata.enums.WhereFrom;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.DateFormat;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 呼叫记录
 * @TODO 注意枚举字段，都抽取出来
 * @author wws
 */
@Document(indexName = "#{elasticSearchConfig.indexName()}_call_history",shards = 24,replicas = 2, type = "data")
public class CallHistory implements BaseEntity {

    private static final long serialVersionUID = 1L;

    @Id
    private String sessionId ; //会话ID


    private Long version;

    @Field(type = FieldType.Keyword)
    private String callTaskId ; //任务包id


    @Field(type = FieldType.Keyword)
    private String packageId ; //话术包id

    @Field(type = FieldType.Keyword)
    private String packageName ; //话术包Name

    /**
     * E1,阿里云：客户号码
     * 手机云呼： 经纪号码
     * */
    @Field(type = FieldType.Keyword)
    private String mainCallPhone; //主叫；由拨号时发送过来
    /**
     *
     * */
    @Field(type = FieldType.Keyword)
    private String targetCallPhone; //被叫；由拨号时发送过来

    @Field(type = FieldType.Keyword)
    private String showNum; //主显号码：小号、E1固话等；

    private String dataId = "-1"; //置业或app数据库 数据id，用于jms推送数据时，置业或app更新数据的索引；这要求置业或app保存数据成功后再提交呼叫任务到云呼

    private WhereFrom whereFrom;

    private PageFrom pageFrom;

    @Field(type = FieldType.Keyword)
    private String machineFrom;//机器码：用于定位websocket对象（websocket）；app的话，传userId

    private MainCallType mainCallType; //mainCallPhone是什么号码？经纪人：1， 客户：0

    @Field(type = FieldType.Keyword)
    private String customerName; //客户名字

    @Field(type = FieldType.Keyword)
    private String propertyNo ;    //房源编号或客户编号（使用来源页面pageFrom区分）

    @Field(type = FieldType.Text)
    private String project ;       //项目名或客户最新根据（使用来源页面pageFrom区分）

    @Field(type = FieldType.Keyword)
    private String objectId ;       ////置业oracle通话记录中，盘源、客户、项目的id（联动call）

    private CommitTo commitTo; //提交到哪里：东进(0)/电信(1)，手机（2）(在线),手机离线(3),阿里云（9） 新版阿里云双呼(10) 单呼(12) fs(8)

    private Boolean commitOk = false; //提交呼叫任务到CTI/福建电信 成功
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date commitTime; //提交呼叫任务到 CTI/福建电信时间

    private Integer city;  //经纪所在城市:广州(1)/东莞(2)/佛山(3)

    private Integer callType; //通话类型：呼出(0)、呼入(1),呼出《经纪人呼主显转接到客户》(2)
    @Field(type = FieldType.Keyword)
    private String ims; //计费号码，记录使用哪个计费号码呼出

    @Field(type = FieldType.Text)
    private String recordFileUrl; //录音文件地址

    private Long recordTimeLength; //通话时长（S）

    @Field(type = FieldType.Text)
    private String recordFileUrlPartA; //语音分析录音文件地址

    private Integer interrupt; //是否中断    未中断（-1），自动动中断（0），手段中断（1）

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date interruptTime; //中断时间

    @Field(type = FieldType.Keyword)
    private String callOutResultMessage; // 呼出调用api返回的消息中文

    @Field(type = FieldType.Keyword)
    private String callOutResultCode; // 呼出调用api返回的消息code

    @Field(type = FieldType.Keyword)
    private String callOutrequestId; //呼出请求的id

    //=================呼叫状态================
    private Boolean mainCallRinging; //主叫响铃

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date mainCallRingingTime; //主叫响铃时间

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveMainCallRingingTime; //接收主叫响铃状态时间

    private Boolean mainCallAnswered; //主叫应答

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date mainCallAnsweredTime; //主叫应答

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveMainCallAnsweredTime; //接收主叫应答状态时间

    private Boolean mainCallFailed; //呼叫主叫失败：如果没有响铃，表示主叫空号；如有响铃，表示未接听或把来电号码加入黑名单或手机飞行模式（电信）
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date mainCallFailedTime; //呼叫主叫失败时间

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveMainCallFailedTime; //接收呼叫主叫失败状态时间

    private Boolean targetCallRinging; //被叫响铃

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date targetCallRingingTime; //被叫响铃时间

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveTargetCallRingingTime; //接收被叫响铃状态时间

    private Boolean targetCallAnswered; //被叫应答

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date targetCallAnsweredTime; //被叫应答
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveTargetCallAnsweredTime; //接收被叫应答状态时间

    private Boolean targetCallFailed; //呼叫被叫失败：如果没有响铃，表示被叫空号；如有响铃，表示未接听或把来电号码加入黑名单或手机飞行模式；（电信）

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date targetCallFailedTime; //呼叫被叫失败时间

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveTargetCallFailedTime; //接收呼叫被叫失败状态时间

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date disconnectTime; //通话结束时间（也包含使用手机拨打的结束时间）

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date receiveDisconnectTime; //接收通话结束时间状态时间

    @Field(type = FieldType.Keyword)
    private String failedReason; //不能正常通话原因

    private String messageId; //jms msg Id  阿里云 callId

    private String jsonpCallBack; //用于jsonP 的callBack名，不需记录到数据库

    private Boolean isInserted = false; //这里用来判断是否已经入推了ES队列，不管是推送成功还是失败都表示为 true

    @Field(type = FieldType.Keyword)
    private String today;

    private Integer dealStatus; //是否已经转到HBase标识 空或者0 --未转移，1-已经成功转移，-1转了但是没找到文件(可能为空，可能按规则找不到)，-3（掉了转移接口但是没成功存到hbase）， 2--成功删除了对应的wav文件，-2--执行了删除文件但是job没找到wav

    @Field(type = FieldType.Text)
    private String hbaseRecordFileUrl; //hbase录音文件链接

    private String hbaseRecordFileUrlA;//hbase录音文件链接头文件

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date mainCallStartTime;  //阿里录音话单，主叫开始时间
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date mainCallEndTime;   //阿里录音话单，主叫结束时间

    private Integer mainCallLength;   //阿里录音话单，主叫通话时长（s）

    private Integer mainChargingLength;//主叫计费时长（m）

    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date targetCallStartTime;  //阿里录音话单，被叫开始时间
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date targetCallEndTime;   //阿里录音话单，被叫结束时间

    private Integer targetCallLength;   //阿里录音话单，被叫通话时长（s）

    private Integer targetChargingLength; //被叫计费时长（m）

    private Integer totalBillingLength;//总计费时长（m）

    /**对话轮次*/
    private Integer roundTimes;

    /**意向等级(跟进分类(自动))*/
    private CustomerNeedLevel customerNeedLevel;

    /**跟进分类（人工）*/
    private CustomerFollowCategory customerFollowCategory;

    /**客户关注点:
     * 通话结束后由实时分析服务更新*/
    private List<String> focusWords;

    /**
     * 创建时间
     */
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 创建人
     * */
    private String createUserId = "-1";

    /**
     * 创建人的NO
     */
    private String createUserNo;

    /**
     * 修改时间
     */
    @Field(type = FieldType.Date, format = DateFormat.custom, pattern = "yyyy-MM-dd HH:mm:ss" )
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @JSONField(format="yyyy-MM-dd HH:mm:ss")
    private Date modTime;

    /**
     * 修改人
     * */
    private Integer modUserId;

    @Field(type = FieldType.Text)
    private String remark;

    private Boolean hasState = false;//状态是否统计过



    @Field(type = FieldType.Keyword)
    private String ccid ;    //卡id

    @Field(type = FieldType.Keyword)
    private String sipUser ;    //呼叫的sipId

    @Override
    public Serializable getId() {
        return sessionId;
    }

    public String getSessionId() {
        return sessionId;
    }

    public void setSessionId(String sessionId) {
        this.sessionId = sessionId;
    }

    public String getCallTaskId() {
        return callTaskId;
    }

    public void setCallTaskId(String callTaskId) {
        this.callTaskId = callTaskId;
    }

    public Long getVersion() {
        return version;
    }

    public void setVersion(Long version) {
        this.version = version;
    }

    public String getMainCallPhone() {
        return mainCallPhone;
    }

    public void setMainCallPhone(String mainCallPhone) {
        this.mainCallPhone = mainCallPhone;
    }

    public String getTargetCallPhone() {
        return targetCallPhone;
    }

    public void setTargetCallPhone(String targetCallPhone) {
        this.targetCallPhone = targetCallPhone;
    }

    public String getShowNum() {
        return showNum;
    }

    public void setShowNum(String showNum) {
        this.showNum = showNum;
    }

    public String getDataId() {
        return dataId;
    }

    public void setDataId(String dataId) {
        this.dataId = dataId;
    }

    public WhereFrom getWhereFrom() {
        return whereFrom;
    }

    public void setWhereFrom(WhereFrom whereFrom) {
        this.whereFrom = whereFrom;
    }

    public PageFrom getPageFrom() {
        return pageFrom;
    }

    public void setPageFrom(PageFrom pageFrom) {
        this.pageFrom = pageFrom;
    }

    public String getMachineFrom() {
        return machineFrom;
    }

    public void setMachineFrom(String machineFrom) {
        this.machineFrom = machineFrom;
    }

    public MainCallType getMainCallType() {
        return mainCallType;
    }

    public void setMainCallType(MainCallType mainCallType) {
        this.mainCallType = mainCallType;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getPropertyNo() {
        return propertyNo;
    }

    public void setPropertyNo(String propertyNo) {
        this.propertyNo = propertyNo;
    }

    public String getProject() {
        return project;
    }

    public void setProject(String project) {
        this.project = project;
    }

    public String getObjectId() {
        return objectId;
    }

    public void setObjectId(String objectId) {
        this.objectId = objectId;
    }

    public CommitTo getCommitTo() {
        return commitTo;
    }

    public void setCommitTo(CommitTo commitTo) {
        this.commitTo = commitTo;
    }

    public Boolean getCommitOk() {
        return commitOk;
    }

    public void setCommitOk(Boolean commitOk) {
        this.commitOk = commitOk;
    }

    public Date getCommitTime() {
        return commitTime;
    }

    public void setCommitTime(Date commitTime) {
        this.commitTime = commitTime;
    }

    public Integer getCity() {
        return city;
    }

    public void setCity(Integer city) {
        this.city = city;
    }

    public Integer getCallType() {
        return callType;
    }

    public void setCallType(Integer callType) {
        this.callType = callType;
    }

    public String getIms() {
        return ims;
    }

    public void setIms(String ims) {
        this.ims = ims;
    }

    public String getRecordFileUrl() {
        return recordFileUrl;
    }

    public void setRecordFileUrl(String recordFileUrl) {
        this.recordFileUrl = recordFileUrl;
    }

    public Long getRecordTimeLength() {
        return recordTimeLength;
    }

    public void setRecordTimeLength(Long recordTimeLength) {
        this.recordTimeLength = recordTimeLength;
    }

    public String getRecordFileUrlPartA() {
        return recordFileUrlPartA;
    }

    public void setRecordFileUrlPartA(String recordFileUrlPartA) {
        this.recordFileUrlPartA = recordFileUrlPartA;
    }

    public Integer getInterrupt() {
        return interrupt;
    }

    public void setInterrupt(Integer interrupt) {
        this.interrupt = interrupt;
    }

    public Date getInterruptTime() {
        return interruptTime;
    }

    public void setInterruptTime(Date interruptTime) {
        this.interruptTime = interruptTime;
    }

    public String getCallOutResultMessage() {
        return callOutResultMessage;
    }

    public void setCallOutResultMessage(String callOutResultMessage) {
        this.callOutResultMessage = callOutResultMessage;
    }

    public String getCallOutResultCode() {
        return callOutResultCode;
    }

    public void setCallOutResultCode(String callOutResultCode) {
        this.callOutResultCode = callOutResultCode;
    }

    public String getCallOutrequestId() {
        return callOutrequestId;
    }

    public void setCallOutrequestId(String callOutrequestId) {
        this.callOutrequestId = callOutrequestId;
    }

    public Boolean getMainCallRinging() {
        return mainCallRinging;
    }

    public void setMainCallRinging(Boolean mainCallRinging) {
        this.mainCallRinging = mainCallRinging;
    }

    public Date getMainCallRingingTime() {
        return mainCallRingingTime;
    }

    public void setMainCallRingingTime(Date mainCallRingingTime) {
        this.mainCallRingingTime = mainCallRingingTime;
    }

    public Date getReceiveMainCallRingingTime() {
        return receiveMainCallRingingTime;
    }

    public void setReceiveMainCallRingingTime(Date receiveMainCallRingingTime) {
        this.receiveMainCallRingingTime = receiveMainCallRingingTime;
    }

    public Boolean getMainCallAnswered() {
        return mainCallAnswered;
    }

    public void setMainCallAnswered(Boolean mainCallAnswered) {
        this.mainCallAnswered = mainCallAnswered;
    }

    public Date getMainCallAnsweredTime() {
        return mainCallAnsweredTime;
    }

    public void setMainCallAnsweredTime(Date mainCallAnsweredTime) {
        this.mainCallAnsweredTime = mainCallAnsweredTime;
    }

    public Date getReceiveMainCallAnsweredTime() {
        return receiveMainCallAnsweredTime;
    }

    public void setReceiveMainCallAnsweredTime(Date receiveMainCallAnsweredTime) {
        this.receiveMainCallAnsweredTime = receiveMainCallAnsweredTime;
    }

    public Boolean getMainCallFailed() {
        return mainCallFailed;
    }

    public void setMainCallFailed(Boolean mainCallFailed) {
        this.mainCallFailed = mainCallFailed;
    }

    public Date getMainCallFailedTime() {
        return mainCallFailedTime;
    }

    public void setMainCallFailedTime(Date mainCallFailedTime) {
        this.mainCallFailedTime = mainCallFailedTime;
    }

    public Date getReceiveMainCallFailedTime() {
        return receiveMainCallFailedTime;
    }

    public void setReceiveMainCallFailedTime(Date receiveMainCallFailedTime) {
        this.receiveMainCallFailedTime = receiveMainCallFailedTime;
    }

    public Boolean getTargetCallRinging() {
        return targetCallRinging;
    }

    public void setTargetCallRinging(Boolean targetCallRinging) {
        this.targetCallRinging = targetCallRinging;
    }

    public Date getTargetCallRingingTime() {
        return targetCallRingingTime;
    }

    public void setTargetCallRingingTime(Date targetCallRingingTime) {
        this.targetCallRingingTime = targetCallRingingTime;
    }

    public Date getReceiveTargetCallRingingTime() {
        return receiveTargetCallRingingTime;
    }

    public void setReceiveTargetCallRingingTime(Date receiveTargetCallRingingTime) {
        this.receiveTargetCallRingingTime = receiveTargetCallRingingTime;
    }

    public Boolean getTargetCallAnswered() {
        return targetCallAnswered;
    }

    public void setTargetCallAnswered(Boolean targetCallAnswered) {
        this.targetCallAnswered = targetCallAnswered;
    }

    public Date getTargetCallAnsweredTime() {
        return targetCallAnsweredTime;
    }

    public void setTargetCallAnsweredTime(Date targetCallAnsweredTime) {
        this.targetCallAnsweredTime = targetCallAnsweredTime;
    }

    public Date getReceiveTargetCallAnsweredTime() {
        return receiveTargetCallAnsweredTime;
    }

    public void setReceiveTargetCallAnsweredTime(Date receiveTargetCallAnsweredTime) {
        this.receiveTargetCallAnsweredTime = receiveTargetCallAnsweredTime;
    }

    public Boolean getTargetCallFailed() {
        return targetCallFailed;
    }

    public void setTargetCallFailed(Boolean targetCallFailed) {
        this.targetCallFailed = targetCallFailed;
    }

    public Date getTargetCallFailedTime() {
        return targetCallFailedTime;
    }

    public void setTargetCallFailedTime(Date targetCallFailedTime) {
        this.targetCallFailedTime = targetCallFailedTime;
    }

    public Date getReceiveTargetCallFailedTime() {
        return receiveTargetCallFailedTime;
    }

    public void setReceiveTargetCallFailedTime(Date receiveTargetCallFailedTime) {
        this.receiveTargetCallFailedTime = receiveTargetCallFailedTime;
    }

    public Date getDisconnectTime() {
        return disconnectTime;
    }

    public void setDisconnectTime(Date disconnectTime) {
        this.disconnectTime = disconnectTime;
    }

    public Date getReceiveDisconnectTime() {
        return receiveDisconnectTime;
    }

    public void setReceiveDisconnectTime(Date receiveDisconnectTime) {
        this.receiveDisconnectTime = receiveDisconnectTime;
    }

    public String getFailedReason() {
        return failedReason;
    }

    public void setFailedReason(String failedReason) {
        this.failedReason = failedReason;
    }

    public String getMessageId() {
        return messageId;
    }

    public void setMessageId(String messageId) {
        this.messageId = messageId;
    }

    public String getJsonpCallBack() {
        return jsonpCallBack;
    }

    public void setJsonpCallBack(String jsonpCallBack) {
        this.jsonpCallBack = jsonpCallBack;
    }

    public Boolean getIsInserted() {
        return isInserted;
    }

    public void setIsInserted(Boolean inserted) {
        isInserted = inserted;
    }

    public String getToday() {
        return today;
    }

    public void setToday(String today) {
        this.today = today;
    }

    public Integer getDealStatus() {
        return dealStatus;
    }

    public void setDealStatus(Integer dealStatus) {
        this.dealStatus = dealStatus;
    }

    public String getHbaseRecordFileUrl() {
        return hbaseRecordFileUrl;
    }

    public void setHbaseRecordFileUrl(String hbaseRecordFileUrl) {
        this.hbaseRecordFileUrl = hbaseRecordFileUrl;
    }

    public String getHbaseRecordFileUrlA() {
        return hbaseRecordFileUrlA;
    }

    public void setHbaseRecordFileUrlA(String hbaseRecordFileUrlA) {
        this.hbaseRecordFileUrlA = hbaseRecordFileUrlA;
    }

    public Date getMainCallStartTime() {
        return mainCallStartTime;
    }

    public void setMainCallStartTime(Date mainCallStartTime) {
        this.mainCallStartTime = mainCallStartTime;
    }

    public Date getMainCallEndTime() {
        return mainCallEndTime;
    }

    public void setMainCallEndTime(Date mainCallEndTime) {
        this.mainCallEndTime = mainCallEndTime;
    }

    public Integer getMainCallLength() {
        return mainCallLength;
    }

    public void setMainCallLength(Integer mainCallLength) {
        this.mainCallLength = mainCallLength;
    }

    public Date getTargetCallStartTime() {
        return targetCallStartTime;
    }

    public void setTargetCallStartTime(Date targetCallStartTime) {
        this.targetCallStartTime = targetCallStartTime;
    }

    public Date getTargetCallEndTime() {
        return targetCallEndTime;
    }

    public void setTargetCallEndTime(Date targetCallEndTime) {
        this.targetCallEndTime = targetCallEndTime;
    }

    public Integer getTargetCallLength() {
        return targetCallLength;
    }

    public void setTargetCallLength(Integer targetCallLength) {
        this.targetCallLength = targetCallLength;
    }

    public Integer getRoundTimes() {
        return roundTimes;
    }

    public void setRoundTimes(Integer roundTimes) {
        this.roundTimes = roundTimes;
    }

    public CustomerNeedLevel getCustomerNeedLevel() {
        return customerNeedLevel;
    }

    public void setCustomerNeedLevel(CustomerNeedLevel customerNeedLevel) {
        this.customerNeedLevel = customerNeedLevel;
    }

    public CustomerFollowCategory getCustomerFollowCategory() {
        return customerFollowCategory;
    }

    public void setCustomerFollowCategory(CustomerFollowCategory customerFollowCategory) {
        this.customerFollowCategory = customerFollowCategory;
    }

    public List<String> getFocusWords() {
        return focusWords;
    }

    public void setFocusWords(List<String> focusWords) {
        this.focusWords = focusWords;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getCreateUserId() {
        return createUserId;
    }

    public void setCreateUserId(String createUserId) {
        this.createUserId = createUserId;
    }

    public Date getModTime() {
        return modTime;
    }

    public void setModTime(Date modTime) {
        this.modTime = modTime;
    }

    public Integer getModUserId() {
        return modUserId;
    }

    public void setModUserId(Integer modUserId) {
        this.modUserId = modUserId;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Integer getMainChargingLength() {
        return mainChargingLength;
    }

    public void setMainChargingLength(Integer mainChargingLength) {
        this.mainChargingLength = mainChargingLength;
    }

    public Integer getTargetChargingLength() {
        return targetChargingLength;
    }

    public void setTargetChargingLength(Integer targetChargingLength) {
        this.targetChargingLength = targetChargingLength;
    }

    public Integer getTotalBillingLength() {
        return totalBillingLength;
    }

    public void setTotalBillingLength(Integer totalBillingLength) {
        this.totalBillingLength = totalBillingLength;
    }

    public Boolean getHasState() {
        return hasState;
    }

    public void setHasState(Boolean hasState) {
        this.hasState = hasState;
    }

    public String getPackageId() {
        return packageId;
    }

    public void setPackageId(String packageId) {
        this.packageId = packageId;
    }

    public String getPackageName() {
        return packageName;
    }

    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }

    public String getCreateUserNo() {
        return createUserNo;
    }

    public void setCreateUserNo(String createUserNo) {
        this.createUserNo = createUserNo;
    }

    public String getCcid() {
        return ccid;
    }

    public void setCcid(String ccid) {
        this.ccid = ccid;
    }

    public String getSipUser() {
        return sipUser;
    }

    public void setSipUser(String sipUser) {
        this.sipUser = sipUser;
    }
}
